/**
 * 
 */
package datenbank;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
 * 
 * 
 * @date 22.03.2012
 * @author rs
 * @version 1.0
 * 
 */
public class GlobaleDatenSave {

	private Initialisierung initialisierung;

	private File pfadGlobaleDaten;

	private ArrayList<String> kopf;

	BufferedReader br;
	BufferedWriter bf;

	/**
	 * Konstruktor
	 * 
	 * @param initialisierung
	 * @param ueberSchr
	 * @param globaleDaten
	 * @throws FileNotFoundException
	 */
	public GlobaleDatenSave(Initialisierung initialisierung, String relaistyp) {

		this.initialisierung = initialisierung;

		if (relaistyp.equals("Klein")) {
			System.out.println("Kleines Relais");
			pfadGlobaleDaten = new File(initialisierung.getPfadGlobalKlein());
		}
		
		if(relaistyp.equals("Gross")){
			System.out.println("Grosses Relais");
			pfadGlobaleDaten = new File(initialisierung.getPfadGlobalGross());
		}
		
		kopf = new ArrayList<String>();

		try {
			kopfausl();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		try {
			save();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * Speichert die Globalen Werte in die Datenbank
	 * 
	 * @throws IOException
	 * 
	 */
	private void save() throws IOException {
		bf = new BufferedWriter(new FileWriter(pfadGlobaleDaten));

		// Kopf einfuegen
		for (String s : kopf) {
			bf.write(s);
			bf.newLine();
		}

		for (String s : initialisierung.getDomGlobaleDatenKlein()
				.getGlobaleDaten()) {
			bf.write(s);
			bf.newLine();
		}

		bf.write("EOF");
		bf.close();
	}

	/**
	 * @throws IOException
	 * 
	 */
	private void kopfausl() throws IOException {
		br = new BufferedReader(new FileReader(pfadGlobaleDaten));

		String line;

		for (; (line = br.readLine()) != null;) {
			StringBuilder sb = new StringBuilder(line);

			if (sb.charAt(0) == ';') {
				kopf.add(line);
			} else {
				// Schleife abbrechen wenn der Kopf eingelesen ist
				break;
			}
		}

		// File schliessen
		br.close();

	}

}
